// http.js
// 通常可以吧 baseUrl 单独放在一个 js 文件了
const baseUrl = process.env.VUE_APP_BASE_API;

const request = (options = {}) => {
  // 在这里可以对请求头进行一些设置
  // 例如：
  options.header = {
    'Content-Type': 'application/json',
    'token': uni.getStorageSync('token')
  };
  return new Promise((resolve, reject) => {
    uni.showLoading({
      title: '加载中',
      mask: true
    });
    return uni.request({
      url: options.url.indexOf('http') > -1 ? options.url : baseUrl + options.url,
      data: options.data || {},
      method: options.type || 'GET',
      header: options.header,
      success: (res) => {
        uni.hideLoading();
        // 这里是成功的返回码
        if (res.data.code !== '0') {
          uni.showToast({
            title: res.data.msg || '获取数据失败:',
            duration: 1000,
            icon: 'none'
          });
          return;
        }
        resolve(res.data);
      },
      fail: (err) => {
        reject(err);
        uni.hideLoading();
      },
      complete: () => {
        uni.hideLoading();
      }
    });
  });
};

const get = (url, data, options = {}) => {
  options.type = 'GET';
  options.data = data;
  options.url = url;
  return request(options);
};

const post = (url, data, options = {}) => {
  options.type = 'POST';
  options.data = data;
  options.url = url;
  return request(options);
};


export default {
  request,
  get,
  post
};
